Semplificare registrazione di dati dallo spettro radio e rendere i risultati facilmente analizzabili
Ridurre le risorse necessarie per analisi radio in larga scala, sia hardware che software
Sperimentare l’utilizzo di tecnologie contemporanee per creare una serie di software che sfruttano SDR
Hardware
Ogni “nodo” é un dispositivo embedded o a bassa potenza (ad esempio Raspberry Pi) dotato di un ricevitore SDR
Un ricevitore moderno come RTL-SDR é facilmente reperibile e con specifiche più che adeguate per misurazioni radio su scala medio-piccola
Un ricevitore RTL-SDR
Un Raspberry Pi
Una vista “a cascata” dei segnali
Analisi dati
I dati vengono registrati in uno dei seguenti formati
Densità spettrale “grezza” su una specifica frequenza
Medie di densità ottenute tramite FFT in un periodo di tempo arbitrario e un intervallo di frequenze, ordinate per frequenza e momento di acquisizione
Trasferimento dati
Anche moduli SDR economici e facilmente reperibili producono una grande quantità di dati
Tramite varie strategie di massimizzazione del traffico di rete, i dati sono trasferiti dai nodi al backend tramite TCP
Il dati sono salvati in RAM, poi su disco, dal servizio backend sotto forma di un key-value store
Software - backend
Il backend deve
Controllare remotamente i nodi
Ricevere registrazioni radio e salvare i dati su disco
Mostrare un’interfaccia di controllo all’utente
Software - nodi
Ogni nodo deve
Scambiare messaggi di servizio con il backend
Eseguire comandi arbitrari
Inviare misurazioni radio al backend su richiesta
Interfaccia utente
Un’interfaccia efficiente e accessibile deve permettere a qualunque utente di navigare tra le funzioni di un sistema complesso
An idiot admires complexity, a genius admires simplicity
Terry A. Davis
Homepage
La homepage permette il controllo remoto della flotta di nodi
Vista dati
Ogni nodo viene monitorato e fornisce registrazioni radio scaricabili
Configurazione
Ogni nodo fornisce un’interfaccia di configurazione del sistema
Sommario
É stato progettato un sistema client-server (“backend”) che
sfrutta una tecnologia moderna per messaggistica di servizio (NATS), con messaggi in formato stabile e documentato (JSON)
gestisce i dati e ne fornisce l’accesso tramite uno standard del Web (REST)
É stato implementato software di basso livello (“node”) che
permette il controllo remoto di una macchina (nodo)
si interfaccia con dispositivi SDR per l’acquisizione di dati radio
Sono state ideate e sviluppate interfacce grafiche ad uso degli utenti del servizio, basate su tecnologie Web e su principi di accessibilità
Grazie per l'attenzione
BadgerDB
Un key-value store svilppato da Dgraph che memorizza dati in una struttura simile a una Map, tenendo traccia dei rapporti chiave-valore usando alberi LSM in RAM
Permette scrittura e lettura molto veloci perché non provvede un motore di query relazionale come database basati su SQL
Considerazioni
Ottimizzato per SSD moderni e processori multi-core
Sviluppato in Go e open source
Go
Linguaggio di programmazione reso open-source da Google nel 2009 e in rapida adozione professionale
Creato appositamente per sviluppo backend su macchine multi-core e interconnesse da reti moderne
Considerazioni
Estremamente performante su macchine multi-core
Sistema di tipi “severo” per assicurare correttezza
Gestione automatica della memoria (“garbage collection”)
NATS
Sistema di messaggistica sviluppato in Go e nato come alternativa a MQTT, basato su uno o più server centrali e un numero arbitrario di client
Considerazioni
Garanzie di spedizione messaggi in caso di perdita dati